Option Explicit

' fieldPhyNameRowNo -- 标识对象属性的物理名称的行号(默认值=1)
Private Const FIELD_PHY_NAME_ROW_NO As Integer = 1
' fieldTypeRowNo -- 标识对象属性的类型名称的行号(默认值=2)
Private Const FIELD_TYPE_ROW_NO As Integer = 2
' tableDataStartRowNo -- 标识第一行数据在 table 中的行号(默认值=3)
Private Const TABLE_DATA_START_ROW_NO As Integer = 3

Public Sub main()
    Dim wb As Workbook
    Set wb = ActiveWorkbook

    Dim form As VBComponent
    Set form = wb.VBProject.VBComponents.Item("createJsonByTableDataForm")

    ' ==================================================
    ' 1. 设置 form 的属性
    ' ==================================================
    With form
        .Properties("Height") = 360
        .Properties("Width") = 495
        .Properties("Caption") = "create json by table data"
    End With

    Dim ctrs As Controls
    Set ctrs = form.Designer.Controls

    ' ==================================================
    ' 2. 第一行
    ' ==================================================
    ' 1. 设置: fieldPhyNameRowNo -- 标识对象属性的物理名称的行号(默认值=1)
    '    标题
    UtilsControl.createLabel ctrs, "fieldPhyNameRowNoLabel", _
        18, 102, 36, 18, caption:="fieldPhyNameRowNo", fontSize:=11

    '    输入框
    UtilsControl.createTextBox ctrs, "fieldPhyNameRowNoBox", _
        24, 36, 144, 12, _
        fontSize:=12, text:=FIELD_PHY_NAME_ROW_NO, value:=FIELD_PHY_NAME_ROW_NO, tabIndex:=1

    ' 2. 设置: fieldTypeRowNo -- 标识对象属性的类型名称的行号(默认值=2)
    '    标题
    UtilsControl.createLabel ctrs, "fieldTypeRowNoLabel", _
        18, 78, 198, 18, caption:="fieldTypeRowNo", fontSize:=10

    '    输入框
    UtilsControl.createTextBox ctrs, "fieldTypeRowNoBox", _
        24, 36, 276, 12, _
        fontSize:=12, text:=FIELD_TYPE_ROW_NO, value:=FIELD_TYPE_ROW_NO, tabIndex:=2

    ' ==================================================
    ' 3. 第二行
    ' ==================================================
    ' 1. 设置: tableDataStartRowNo -- 标识第一行数据在 table 中的行号(默认值=3)
    '    标题
    UtilsControl.createLabel ctrs, "tableDataStartRowNoLabel", _
        18, 114, 24, 48, caption:="tableDataStartRowNo", fontSize:=11

    '    输入框
    UtilsControl.createTextBox ctrs, "tableDataStartRowNoBox", _
        24, 36, 144, 42, _
        fontSize:=12, text:=TABLE_DATA_START_ROW_NO, value:=TABLE_DATA_START_ROW_NO, tabIndex:=3

    ' ==================================================
    ' 4. 第三行
    ' ==================================================
    ' 1. range
    '    标题
    UtilsControl.createLabel ctrs, "rangeLabel", _
        18, 42, 18, 78, caption:="Range", fontSize:=12

    '    输入框
    UtilsControl.createRefEdit ctrs, "rangeBox", _
        24, 234, 78, 72, _
        fontSize:=12, tabIndex:=4

    ' 2. 按钮: 生成 json 数据
    UtilsControl.createButton ctrs, "createJsonBtn", _
        30, 108, 348, 66, _
        caption:="createJson", fontSize:=10, tabIndex:=5

    ' ==================================================
    ' 5. 第四行
    ' ==================================================
    ' 显示生成的 json 的输入框
    UtilsControl.createTextBox ctrs, "resultBox", _
        217, 444, 18, 102, _
        fontSize:=9, tabIndex:=6, scrollBars:=3, multiLine:=True
End Sub
